package com.gobang.domain.message;

import lombok.*;

/**
 * 游戏结束通知消息DTO
 * 服务器向客户端发送的游戏结束通知消息
 * 
 * @author System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class GameOverMessage extends WebSocketMessage {
    
    /**
     * 游戏结束通知数据
     */
    private GameOverData data;
    
    /**
     * 游戏结束通知数据内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class GameOverData {
        /**
         * 房间ID
         */
        private String roomId;
        
        /**
         * 获胜者ID
         */
        private Long winnerId;
        
        /**
         * 获胜者用户名
         */
        private String winnerUsername;
        
        /**
         * 游戏结果（WIN/LOSE）
         */
        private String gameResult;

        // user1
        //   积分变化
        //   新积分

        // user2
        //   积分变化
        //   新积分

        /**
         * 积分变化
         */
        private Integer scoreChange;
        
        /**
         * 新积分
         */
        private Integer newScore;
        
        /**
         * 结束原因
         */
        private String reason;
    }
    
    /**
     * 构造函数
     */
    public GameOverMessage(GameOverData data) {
        super("GAME_OVER");
        this.data = data;
    }
} 